package dondeestamitrasnporte.protocolo;

import java.util.ArrayList;

import com.google.android.gms.maps.model.LatLng;





public class Paradero 
{


	private LatLng coordenadas;
	private ArrayList<Estadistica> estadisticas;
	private String nombre;





	public Paradero(LatLng coordenadas, ArrayList<Estadistica> estadisticas,
			String nombre) {
		super();
		this.coordenadas = coordenadas;
		this.estadisticas = estadisticas;
		this.nombre = nombre;
	}
	public LatLng getCoordenadas() {
		return coordenadas;
	}
	public void setCoordenadas(LatLng coordenadas) {
		this.coordenadas = coordenadas;
	}
	public ArrayList<Estadistica> getEstadisticas() {
		return estadisticas;
	}
	public void setEstadisticas(ArrayList<Estadistica> estadisticas) {
		this.estadisticas = estadisticas;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}


	public void AgregarEstadistica(Estadistica n)
	{

		estadisticas.add(n);
	}


	public boolean iguales(Paradero otro)
	{
		boolean respuesta = true;
		if(!nombre.equals(otro.getNombre()))
		{

			respuesta = false;
			try
			{
				throw new Exception();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}

		}
		else if(coordenadas.latitude!=otro.getCoordenadas().latitude || coordenadas.longitude != otro.getCoordenadas().longitude)
		{

			respuesta = false;
			try
			{
				throw new Exception();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		else if(estadisticas.size()!=otro.getEstadisticas().size())
		{

			respuesta = false;
			try
			{
				throw new Exception();
			}
			catch(Exception e)
			{
				e.printStackTrace();
			}
		}
		else
		{

			for(int i =0; i< estadisticas.size();i++)
			{

				if(!estadisticas.get(i).iguales(otro.getEstadisticas().get(i)))
				{

					respuesta = false;
					try
					{
						throw new Exception();
					}
					catch(Exception e)
					{
						e.printStackTrace();
					}
				}
			}
		}

		return respuesta;
	}


	public String darHoraEsperadaLlegada()
	{
		int promedio =-1;
		int contador=0;
		for(int i = 0; i< estadisticas.size();i++)
		{

			int horas = estadisticas.get(i).getHora();
			int minutos = estadisticas.get(i).getMinuto();

			int nuevoDato = horas*60 + minutos;

			if(promedio==-1)
			{
				promedio = nuevoDato;
				contador++;
			}
			else
			{
				promedio = (promedio*contador + nuevoDato)/(contador + 1);
				contador++;
			}

		}
		int horas = promedio/60;

		int minutos = promedio%60;
		if(minutos<0)
		{
			minutos=minutos+60;
		}

		String horaNueva = "";
		if(minutos<0)
		{
			horaNueva = horas+ ":0" + minutos;
		}
		else
		{
			horaNueva = horas+ ":" + minutos;
		}
		
		if(estadisticas.size()==0)
		{
			horaNueva = "No hay estadisticas para calcular hora";
		}
		return horaNueva;

	}





}
